let fmap : ('a -> 'b) -> ('r -> 'a) -> 'r -> 'b = compose
